Namespaces
Variants

std::literals::chrono_literals:: operator""s

From cppreference.net
Definiert im Header <chrono>
constexpr std:: chrono :: seconds
operator "" s ( unsigned long long secs ) ;
(1) (seit C++14)
constexpr std:: chrono :: duration < /*unspecified*/ >
operator "" s ( long double secs ) ;
(2) (seit C++14)

Bildet ein std::chrono::duration Literal, das Sekunden darstellt.

1) Ganzzahliges Literal, gibt exakt std:: chrono :: seconds ( secs ) zurück.
2) Fließkommaliteral, gibt eine Fließkomma-Dauer zurück, die äquivalent zu std::chrono::seconds ist.

Inhaltsverzeichnis

Parameter

secs - die Anzahl der Sekunden

Rückgabewert

Das std::chrono::duration Literal.

Mögliche Implementierung

constexpr std::chrono::seconds operator""s(unsigned long long s)
{
    return std::chrono::seconds(s);
}
constexpr std::chrono::duration<long double> operator""s(long double s)
{
    return std::chrono::duration<long double>(s);
}
**Hinweis:** Der Code innerhalb der `
`-Tags wurde gemäß den Anweisungen nicht übersetzt, da es sich um C++-Code handelt. Die HTML-Struktur und -Attribute bleiben ebenfalls unverändert.

Hinweise

Dieser Operator ist im Namensraum std :: literals :: chrono_literals deklariert, wobei sowohl literals als auch chrono_literals Inline-Namensräume sind. Der Zugriff auf diesen Operator kann erfolgen durch:

  • using namespace std :: literals ,
  • using namespace std :: chrono_literals , oder
  • using namespace std :: literals :: chrono_literals .

Zusätzlich wird innerhalb des Namespace std :: chrono die Direktive using namespace literals :: chrono_literals ; von der Standardbibliothek bereitgestellt, sodass wenn ein Programmierer using namespace std :: chrono ; verwendet, um Zugriff auf die Klassen in der Chrono-Bibliothek zu erhalten, die entsprechenden Literaloperatoren ebenfalls sichtbar werden.

std::string definiert ebenfalls operator "" s , um Literalobjekte vom Typ std::string darzustellen, aber es handelt sich um ein String-Literal: 10s sind zehn Sekunden, aber "10" s ist eine zweizeichenige Zeichenkette.

Beispiel

#include <chrono>
#include <iostream>
int main()
{
    using namespace std::chrono_literals;
    std::chrono::seconds halfmin = 30s;
    std::cout << "Eine halbe Minute sind " << halfmin.count() << " Sekunden"
        " (" << halfmin << ").\n"
        "Eine Minute und eine Sekunde sind " << (1min + 1s).count() << " Sekunden.\n";
    std::chrono::duration moment = 0.1s;
    std::cout << "Ein Moment ist " << moment.count() << " Sekunden"
        " (" << moment << ").\n"
        "Und das Dreifache davon sind " << (moment + 0.2s).count() << " Sekunden.\n";
}

Ausgabe:

Eine halbe Minute sind 30 Sekunden (30s).
Eine Minute und eine Sekunde sind 61 Sekunden.
Ein Moment ist 0.1 Sekunden (0.1s).
Und das Dreifache davon sind 0.3 Sekunden.

Siehe auch

Konstruiert neue Duration
(öffentliche Elementfunktion von std::chrono::duration<Rep,Period> )